package com.dayu.behavior.state;

/**
 * 环境角色：有两个职责
 * 处理本状态必须完成的任务、决定是否可以过渡到其它的状态
 *
 * 几个不成文的约定：
 * 即把状态对象声明为静态常量，有几个状态对象就声明几个状态常量
 * 环境角色具有状态抽象角色定义的所有行为，具体执行使用委托方式
 */
public class Context {

    //定义状态
    public final static State STATE1 = new ConcreteState1();
    public final static State STATE2 = new ConcreteState2();

    //当前状态
    private State currentState;

    //获得当前状态
    public State getCurrentState() {
        return currentState;
    }

    //设置当前状态
    public void setCurrentState(State currentState) {
        this.currentState = currentState;
        //        System.out.println("当前状态：" + currentState);
        //切换状态
        this.currentState.setContext(this);
    }

    public void handle1() {
        this.currentState.handle1();
    }

    public void handle2() {


    }
}
